Thread level speculation has been found to be a method that may be used to parallelize execution of applications without updating the application logic to utilize many cores. In particular, JavaScript based applications benefit significantly on application processors, Central Processing Units (CPU), with multiple cores.
When executing a JavaScript program, the code is typically compiled with a Just In Time compiler where compilation speed is important. The generated code is then made available as fast as possible for execution and more or less no optimizations are applied. By gathering statistics about how frequently different code parts are executed it is possible to spot important code segments “hot code areas” consuming a lot of processor time. The compiler focuses on those code areas and starts to optimize the code. Typically, this is done as a parallel activity, thereby enhancing the performance during execution time.
Thread level speculation is a different method to enhance performance. The concept is that once a new function is found, the function is started in a new thread in a speculative manner. This function may run in parallel with other functions that has their own thread. Once the execution of the function is ready, it is checked if there are any failures or conflicts, due to the speculation. If there is a failure or conflict, a rollback is executed and the function is re-executed in sequential manner. If the speculation fails, there is typically some mechanism that prohibits that the function is speculated on again or at least decreases the likelihood that the function is speculated on, in favor of other functions that is more likely to be successfully. In particular for web applications this methodology may be very useful.